<?php

namespace app\store\controller;
use \Workerman\Worker;
use \Workerman\Lib\Timer;
use think\Db;
use think\Log;
use Predis\Client;
/**
 *  redis 队列实现客户分配
 */
class Rediscus{

}
$task = new Worker();
$task->onWorkerStart = function ($task) {
    $time_interval = 3;
    Timer::add($time_interval, function () {
        $server=[
            'host' => '127.0.0.1',
            'port' => 6379,
        ];
        $redis= new Client($server);
        //取出队列数据
        $infos=$redis->lpop('customerData2');
        if(empty($infos)){
            Log::mylog('处理的数据：','不存在要发送的订阅消息','未获取到订阅111');
            return false;
        }else{
            //发送订阅消息  1_2  1客户id  2 接收人id
            Log::mylog('处理的数据：',$infos,'获取到订阅');
            //查询要接收人是否开启
            $ids=explode('_',$infos);
            $userinfo=Db::name('love_admin_user')->where(['id'=>$ids['1']])->find();
            $customerinfo=Db::name('love_customer')->where(['id'=>$ids['0']])->find();
            $loupaninfo=Db::name('love_building')->where(['id'=>$customerinfo['loupanid']])->value('name');
            if($userinfo['isyx']==2){
                Log::mylog('处理的数据：',$ids['1'],'未授权人员id');
                return false;
            }else{
                $appid = 'wx0580bdcba326b43d';
                $appsecret = 'cf1dac072e4d51a5d5308d4cc91b487b';
                $touser = $userinfo['openid'];
                $template_id = 'SYbMtiQnN3xwhx5LYoVssnn3HsM8Q3-kh6L-EF8dI8U';
                $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' . $appid . '&secret=' . $appsecret;
                $res = json_decode(file_get_contents($url),true);
                $access_token = $res['access_token'] ;
                //请求url
                $url = 'https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=' . $access_token ;
                //发送内容
                $data = [] ;
                //接收者（用户）的 openid
                $data['touser'] = $touser;
                //所需下发的订阅模板id
                $data['template_id'] = $template_id ;
                //点击模板卡片后的跳转页面，仅限本小程序内的页面。支持带参数,（示例index?foo=bar）。该字段不填则模板无跳转。
                $data['page'] = '/pages/shouye/shouye' ;
                //模板内容，格式形如 { "key1": { "value": any }, "key2": { "value": any } }
                $data['data'] = [
                    "thing1"=>[
                        'value' => $customerinfo['name']
                    ],
                    "thing2"=>[
                        'value' => $loupaninfo
                    ],
                    "time4"=>[
                        'value' => date("Y-m-d H:i:s",$customerinfo['fenpei_time'])
                    ],
                    'phrase7'=>[
                        'value'=>'待跟进'
                    ],
                ];
                //跳转小程序类型：developer为开发版；trial为体验版；formal为正式版；默认为正式版
                $data['miniprogram_state'] = 'formal' ;
                $ch = curl_init();
                $params[CURLOPT_URL] = $url;    //请求url地址
                $params[CURLOPT_HEADER] = FALSE; //是否返回响应头信息
                $params[CURLOPT_SSL_VERIFYPEER] = false;
                $params[CURLOPT_SSL_VERIFYHOST] = false;
                $params[CURLOPT_RETURNTRANSFER] = true; //是否将结果返回
                $params[CURLOPT_POST] = true;
                $params[CURLOPT_POSTFIELDS] = json_encode($data);
                curl_setopt_array($ch, $params); //传入curl参数
                $content = curl_exec($ch); //执行
                curl_close($ch); //关闭连接
                return true;
            }
        }
        //处理数据，当数据为偶数是重新入队列（数据测试）  todo 当当前数据未匹配到要分配的销售人员，将此条客户数据放入队列末尾，按顺序进行下次分配
        /*if($infos%2==0){
            //偶数
            $redis->rpush('data',$infos);
            Log::mylog('处理的偶数数据：',$infos,'handle-data-oushu');
            return false;
        }
        Log::mylog('处理的奇数数据：',$infos,'handle-data-jishu');*/
    });
};
//运行
Worker::runAll();